Recursieve procedures maken

   

Procedures beschikken over een beperkte hoeveelheid ruimte voor variabelen. Elke keer dat een procedure zichzelf oproept, wordt een deel van die ruimte verbruikt. Een procedure die zichzelf oproept is een recursieve procedure. Een recursieve procedure die zichzelf continu oproept zal uiteindelijk een fout veroorzaken. Bijvoorbeeld:

Function RunOut(Maximum)
    RunOut = RunOut(Maximum)
End Function

Deze fout is misschien minder duidelijk als twee procedures elkaar een onbepaald aantal keer oproepen of als er een beperkende voorwaarde is waaraan nooit wordt voldaan. Toch kan recursie bruikbaar zijn. De volgende procedure maakt bijvoorbeeld gebruik van een recursieve functie voor het berekenen van faculteiten:

Function Factorial (N)
    If N <= 1 Then    ' Het einde van de recursieve oproepen.
        Factorial = 1    ' (N = 0) stop dus met oproepen.
    Else    ' Roep faculteit weer aan als N > 0.
        Factorial = Factorial(N - 1) * N
    End If
End Function

Test altijd uit of een recursieve procedure zichzelf niet zo vaak oproept dat u geheugen te kort komt. Controleer bij een foutmelding altijd of de procedure zichzelf niet een onbepaalde aantal keer oproept. Daarnaast kunt u op de volgende manieren proberen om geheugenruimte te sparen: